// modules/goodModule/pages/goods/list/list.js
import { reqGoodsList } from '../../../api/goods'

Page({
  /**
   * 页面的初始数据
   */
  data: {
    goodsList: [], // 商品列表数据
    total : 0, // 数据总条数
    isFinish: false, // 判断某个类目id的整个数据是否加载完毕
    isLoading : false, // 判断某个类目id的某次请求的数据是否加载完毕

    // 商品列表请求参数
    requestData : {
      page : 1, // 页码
      limit : 10, // 每页请求的条数
      category1Id : '', // 一级分类Id
      category2Id : '' // 二级分类Id
    }

  },

  // 获取商品列表数据
  async getGoodsList () {

    // 在请求发送之前，需要将isLoading 设置为 true，表示请求正在发送中
    this.data.isLoading = true;

    const { data } = await reqGoodsList(this.data.requestData);
    // 在请求发送结束以后，需要将 isLoading 设置为 false，表示请求已经结束
    this.data.isLoading = true;
    
    // console.log('商品列表数据',res)
    this.setData({
      goodsList : [...this.data.goodsList, ...data.records],
      total : data.total
    })
  },

  // 监听到页面的上拉操作
  onReachBottom () {
    console.log('进入了监听页面了')
    // 解构页码 数据
    const { goodsList, total, requestData , isLoading} = this.data;
    const { page } = requestData;

    // 判断 isLoading 状态
    // 如果状态等于 true，说明请求正在发送中，如果请求正在发送中，就不请求下一页数据
    if(isLoading) return;

    // 开始让 goodsList 长度和 total 进行对比
    // 如果数据相等，商品列表已经加载完毕，如果数据已经加载完毕
    if( goodsList.length === total) {
      this.setData({ isFinish : true })
      return; 
    }

    // 页码 + 1
    this.setData({
      requestData : {...this.data.requestData, page : page  + 1 }
    })

    // 重新获取商品列表
    this.getGoodsList();
  },

  // 监听到页面的下拉刷新操作
  onPullDownRefresh(){
    // 将数据重置
    this.setData({
      goodsList : [],
      total : 0,
      isFinish: false,
      requestData : {...this.data.requestData , page : 1} 
    })

    // 使用最新的参数发送请求
    this.getGoodsList();
    // 手动关闭下拉
    wx.stopPullDownRefresh();
  },

  onLoad (options) {
    // console.log('首页传递给商品列表的参数',options)
    // Object.assign 用来合并对象，后面对象对的属性会往前进行合并
    Object.assign(this.data.requestData,options)

    this.getGoodsList();
	},
	
	// 事件监听函数：转发功能，转发给好友、群聊
	onShareAppMessage() {

	},
	// 事件监听函数：能把小程序分享到朋友圈
	onShareTimeline(){

	}
})
